﻿using BCCommon;
using BCDto.OA.Workflow.WorkflowActivityInstance;
using BCDto.OA.Workflow.WorkflowOperation;

namespace BCService.OA.WorkflowEngine.WorkflowFactory
{
    /// <summary>
    /// 工作流工厂
    /// </summary>
    [NonInjection]
    public interface IWorkflowFactoryService
    {
        /// <summary>
        /// 初始化指派
        /// </summary>
        /// <param name="workflowActivityInstanceDto">工作流活动实例</param>
        /// <returns></returns>
        bool InitAssign(WorkflowActivityInstanceDto workflowActivityInstanceDto);
        /// <summary>
        /// 初始化活动步骤实例分配
        /// </summary>
        /// <param name="activityInstanceId">活动实例Id</param>
        /// <returns></returns>
        bool InitActivityStepInstanceAssign(long activityInstanceId);

        /// <summary>
        /// 任务通过
        /// </summary>
        /// <param name="workflowOperationRequestDto">工作流操作请求</param>
        void Pass(WorkflowOperationRequestDto workflowOperationRequestDto);

        /// <summary>
        /// 任务驳回
        /// </summary>
        /// <param name="workflowOperationRequestDto">工作流操作请求</param>
        void Reject(WorkflowOperationRequestDto workflowOperationRequestDto);

        /// <summary>
        /// 任务暂停
        /// </summary>
        /// <param name="workflowOperationRequestDto">工作流操作请求</param>
        void Paused(WorkflowOperationRequestDto workflowOperationRequestDto);

        /// <summary>
        /// 任务关闭
        /// </summary>
        /// <param name="workflowOperationRequestDto">工作流操作请求</param>
        void Closed(WorkflowOperationRequestDto workflowOperationRequestDto);
        
    }
}
